package cn.hy.机考.part02;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

/**
 * https://blog.csdn.net/starry_night_summer/category_12050306.html
 * @author hy
 *
 * 十三、整数对最小和
 * 给定两个整数数组 array1、array2，数组元素按升序排列
 * 假设从 array1、array2 中分别取出一个元素可构成一对元素，现在需要取出 k 对元素
 * 并对取出的所有元素求和，计算和的最小值
 *
 * 3 1 1 2
 * 3 1 2 3
 * 2
 * 输出 4
 *
 */
public class Demo13 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int[] arr1 = getArray(sc.nextLine());
            int[] arr2 = getArray(sc.nextLine());
            int target = sc.nextInt();
            // 放入所有值
            List<Integer> list = new ArrayList<>();
            for (int i : arr1) {
                for (int j : arr2) {
                    list.add(i + j);
                }
            }
            Integer[] res = new Integer[list.size()];
            list.toArray(res);
            Arrays.sort(res); // 排序
            int sum = 0;
            // 取出前几个
            for (int i = 0 ; i < target ; i++) {
                sum += res[i];
            }
            System.out.println(sum);
        }
    }
    public static int[] getArray(String str) {
        String[] strs = str.split("\\s+");
        int n = Integer.parseInt(strs[0]);
        int[] arr = new int[n];
        for (int i = 1 ; i < strs.length ; i++) {
            arr[i - 1] = Integer.parseInt(strs[i]);
        }
        return arr;
    }
}
